home *** CD-ROM | disk | FTP | other *** search
/ PC World Interactive 1 / PC World Interactive 1 - Nisan 1997.iso / prog / masa / 2 / appbar~1.h < prev    next >
C/C++ Source or Header  |  1996-08-30  |  5KB  |  153 lines

  1. // *********************************************************
  2. // AppBar -- Advanced Menu bar for Windows 95/NT
  3. // All code Copyright (C) 1995, 1996 by Mike Perham
  4. // mperham@cs.cornell.edu
  5. // 
  6. // This code MAY NOT be used for any other program without
  7. // my permission and is forbidden in any shareware/commercial
  8. // program.  This code is provided for educational use only
  9. // and there are no guarantees or promises implied.  Blah blah
  10. // *********************************************************
  11.  
  12. #ifndef APPBARMAIN_H
  13. #define APPBARMAIN_H
  14.  
  15. #define AB_HEIGHT                (GetSystemMetrics(SM_CYMENU)+5)
  16. #define AB_WIDTH                (sv.width)
  17. #define PATH_SIZE                128
  18. // Colors for battery percentage
  19. #define RED                        RGB(192,0,0)
  20. #define BRIGHT_RED                RGB(255,0,0)
  21. #define GREEN                    RGB(0,128,0)
  22. #define YELLOW                    RGB(255,255,0)
  23. // Version number for datafile format
  24. #define APPBAR_FILE_VERSION        103
  25. #define TRUE                    1
  26. #define FALSE                    0
  27. #define SYNC_TIMER                0xF000
  28. #define TIME_UPDATE                0xE000
  29. #define HIDE_TIMER                0xD000
  30. #define SEPARATOR_STRING        "-------"
  31. #define UP                        VK_UP       // These 2 are needed for
  32. #define DOWN                    VK_DOWN     // switch_places()
  33.  
  34. #ifdef _WINNT       // overrides for old-style NT v3.x windows
  35.     #undef AB_HEIGHT
  36.     #define AB_HEIGHT            (GetSystemMetrics(SM_CYMENU)+10)
  37. #endif
  38.  
  39. //////////////////// Structures and classes ////////////////////////////
  40.  
  41. struct user_vars {
  42.     BOOL stayontop;                 // Does ab always float on top?
  43.     BOOL chime;                     // Play sound every hour?
  44.     BOOL date;                      // Display date on menu bar?
  45.     BOOL memory;                    // Display free memory?
  46.     BOOL bottom;                    // Place AppBar at bottom of screen?
  47.     BOOL autohide;                  // Auto hide AppBar?
  48.     BOOL time;                        // Show time?
  49.     BOOL user;                        // Show user?
  50.     char wavfile[PATH_SIZE];        // Path/filename of WAV file to play
  51. };
  52.  
  53. struct sys_vars {
  54.     BOOL newshell;                // This determines whether or not we have the new shell (Start Menu)
  55.     BOOL power;                    // This determines if we have power saving (NT doesn't)
  56.                                 // NT4: newshell == TRUE and power == FALSE
  57.                                 // Win95: both are TRUE
  58.                                 // NT3: both are FALSE
  59.     int width;                  // Screen width  (i.e. 800)
  60.     int height;                 // Screen height (ie 600)
  61.     BOOL battery;               // are we on AC or battery?
  62.     char user[30];              // Optional username
  63.     char appfile[PATH_SIZE];    // DAT filename
  64. };
  65.  
  66. class app_struct {
  67.   public:
  68.     char appexe[PATH_SIZE],     // Path and name of executable
  69.          workingdir[PATH_SIZE], // Working dir
  70.          params[90],            // command line parameters
  71.          appname[30];           // Name of application for menubar
  72.     DWORD show;                 // Maximize, Minimize, etc.
  73.     BOOL separator;             // Separator before this app?
  74.     app_struct *nextapp;        // Pointer to next app
  75.     app_struct *prevapp;
  76.     
  77.     app_struct();
  78.     ~app_struct();
  79. };
  80.  
  81. class menu_struct {
  82.   public:
  83.     char menuname[30];              // name of menu
  84.     int numapps;                    // number of apps in menu
  85.     menu_struct *nextmenu;          // pointer to next menu
  86.     menu_struct *prevmenu;
  87.     app_struct *nextapp;            // pointer to first app in menu
  88.     
  89.     menu_struct();
  90.     ~menu_struct();
  91. };
  92.  
  93.  
  94. // Used to find appliction structure based on a user-selected menu item
  95.  
  96. struct app_list {
  97.     int appId;                      // menuID related to app (100*m +a)
  98.     app_struct *app;                // related app structure
  99.     app_list *next;
  100. };                         
  101.  
  102. // used to pass new menu or app data to window procedure
  103.  
  104. struct hack {
  105.     app_struct *app;
  106.     menu_struct *menu;
  107.     BOOL isnew;
  108. };
  109.  
  110. class AppBar : public CWinApp 
  111. {
  112.     public:
  113.     BOOL IsError;
  114.     CString ABClass;
  115.     AppBarWin *abwin;
  116.     char origdir[PATH_SIZE];
  117.  
  118. #ifdef _DEBUG
  119.     CMemoryState begin, end, diff;
  120. #endif
  121.  
  122.     void CleanUp(void);
  123.     void ParseCmdArgs(void);
  124.     void GetRegKeys(user_vars *args);
  125.     void MakeNewRegKey(HKEY root);
  126.     void SaveRegKey(void);
  127.     BOOL ReadInApps(void);
  128.     void SaveMenu(void);
  129.     BOOL ShowAppBar(void);
  130.     BOOL InitApplication(void);
  131.     BOOL InitInstance(void);
  132.     void ExitAppBar(BOOL error_exit);
  133.     BOOL IsLink(char *filename);
  134.     BOOL ExecuteApplication(app_struct *app);
  135.     HRESULT GetLinkInfo(LPSTR lpszLinkName, LPSTR lpszFile,
  136.                         LPSTR lpszDir, LPSTR lpszArgs, int show);
  137. };
  138.  
  139. menu_struct * find_menu(char * menu_sel);
  140. app_struct * find_app(app_struct * apps, char * app_sel);
  141. app_struct * find_appId(WPARAM menuId);
  142. BOOL switch_places_a(app_struct *app, int dir);
  143. BOOL switch_places_m(menu_struct *menu, int dir);
  144. void kill_applist(void);
  145. void release_app_memory(void);
  146. void killapp(app_struct *app);
  147. void killmenu(menu_struct *menu);
  148. void ab_message(char *msg, HWND parent);
  149. void DoBrowse(int type, CDialog* parent);
  150. void error(char *err_msg);
  151.  
  152. #endif
  153.